﻿#ifndef ROBOTDATA_H
#define ROBOTDATA_H

#include "structdata.h"

namespace xvs {



class OBJLIB_EXPORT FlangePose : public BaseData
{
    Q_OBJECT

    Q_PROPERTY(Real* X READ X WRITE SetX)
    Q_PROPERTY(Real* Y READ Y WRITE SetY)
    Q_PROPERTY(Real* Z READ Z WRITE SetZ)

    Q_PROPERTY(Real* U READ U WRITE SetU)
    Q_PROPERTY(Real* V READ V WRITE SetV)
    Q_PROPERTY(Real* W READ W WRITE SetW)

    Q_PROPERTY(Real* J1 READ J1 WRITE SetJ1)
    Q_PROPERTY(Real* J2 READ J2 WRITE SetJ2)
    Q_PROPERTY(Real* J3 READ J3 WRITE SetJ3)
    Q_PROPERTY(Real* J4 READ J4 WRITE SetJ4)
public:
    DATA_COPY_TYPE(FlangePose)

    FlangePose();
    FlangePose(Real x,Real y,Real z,Real u,Real v,Real w,Real j1,Real j2,Real j3,Real j4);

    FlangePose(const FlangePose& rhs);

    FlangePose& operator = (const FlangePose& rhs);
    bool operator == (FlangePose &rhs);

public:
    Q_INVOKABLE Real* X() { return &mX; }
    Q_INVOKABLE Real* Y() { return &mY; }
    Q_INVOKABLE Real* Z() { return &mZ; }

    Q_INVOKABLE Real* U() { return &mU; }
    Q_INVOKABLE Real* V() { return &mV; }
    Q_INVOKABLE Real* W() { return &mW; }

    Q_INVOKABLE Real* J1() { return &mJ1; }
    Q_INVOKABLE Real* J2() { return &mJ2; }
    Q_INVOKABLE Real* J3() { return &mJ3; }
    Q_INVOKABLE Real* J4() { return &mJ4; }

    Q_INVOKABLE void SetX(const Real* x) { mX = *x; }
    Q_INVOKABLE void SetY(const Real* y) { mY = *y; }
    Q_INVOKABLE void SetZ(const Real* z) { mZ = *z; }

    Q_INVOKABLE void SetU(const Real* u) { mU = *u; }
    Q_INVOKABLE void SetV(const Real* v) { mV = *v; }
    Q_INVOKABLE void SetW(const Real* w) { mW = *w; }

    Q_INVOKABLE void SetJ1(const Real* j) { mJ1 = *j; }
    Q_INVOKABLE void SetJ2(const Real* j) { mJ2 = *j; }
    Q_INVOKABLE void SetJ3(const Real* j) { mJ3 = *j; }
    Q_INVOKABLE void SetJ4(const Real* j) { mJ4 = *j; }

private:
    Real mX;
    Real mY;
    Real mZ;

    Real mU;
    Real mV;
    Real mW;

    Real mJ1;
    Real mJ2;
    Real mJ3;
    Real mJ4;
};








}



#endif // ROBOTDATA_H
